<?php
class Admin_ProfileController extends Zendhlt_Controller_AdminAction {

	private $_currentUser;
	private $_arrParam;
	private $_actionMain;

	public function init() {
		$layoutPath = TEMPLATE_PATH . '/admin';
		$option = array('layout'     => 'index',
                   		'layoutPath' => $layoutPath);
		Zend_Layout::startMvc($option);

		// Mang tham so nhan duoc o moi Action
		$this->_arrParam = $this->_request->getParams();

		// Duong dan cua Action chinh
		$this->_actionMain = '/' . $this->_arrParam['module'] . '/' . $this->_arrParam['controller'];

		// Truyen ra view
		$this->view->actionMain = $this->_actionMain;
		$this->view->currentController = '/' . $this->_arrParam['module'] . '/' . $this->_arrParam['controller'];
		$this->view->arrParam = $this->_arrParam;

		// Lay thong tin user admin hien tai
		$auth = Zend_Auth::getInstance();
		$this->_currentUser = $auth->getIdentity();
	}

	public function indexAction() {
		$this->view->headTitle('Thông tin tài khoản');
		
		if ($this->_currentUser != null) {
			$model = new Admin_Model_UsersAdminMapper();
			$user = $model->getPersonalInformation($this->_currentUser->id);
			$this->view->Item = $user[0];
		
		} else {
			$this->_helper->viewRenderer->setNoRender();
		}
	}
	
	public function changepasswordAction() {
		$this->view->headTitle('Đổi mật khẩu');
		
		$form = new Admin_Form_ChangePassword();
		$this->view->form = $form;
		
		$mapper = new Admin_Model_UsersAdminMapper();
		
		if ($this->_currentUser != null) {
			if ($this->getRequest()->isPost()) {
				$formData = $this->getRequest()->getPost();
				
				if ($form->isValid($formData)) {
					$arrData = $mapper->fetchAll('id=' . $this->_currentUser->id, 'edit');
					$data = array_shift($arrData);
					
					if ($data != null) {
						$user = new Admin_Model_TableColumn_UsersAdmin($data);
						
						if($user->getPassword() === Zendhlt_Encode::password($formData['oldpassword'])) {
							$user->setPassword(Zendhlt_Encode::password($formData['newpassword']));
							$user->setNguoi_cap_nhat($this->_currentUser->id);
							$user->setNgay_sinh(date('d-m-Y', strtotime($user->getNgay_sinh())));
						
							if($mapper->save($user))
								$this->view->msg = "Đổi mật khẩu thành công";
							else
								$this->view->msg = "Đổi mật khẩu thất bại! Vui lòng thử lại";
						}
						else {
							$form->oldpassword->addError("Mật khẩu hiện tại không đúng");
						}
					} else {
						$this->view->msg = "Dữ liệu không tồn tại trong database.";
					}
				} else {
					$form->populate($formData);
				}
			}
		}
	}
	
	private function compareDate($inputDate) {
		$maxDate = new DateTime("now");
		$maxDate->sub(new DateInterval('P18Y'));
		return $inputDate <= $maxDate;
	}

	public function editAction() {
		$this->view->headTitle('Cập nhật thông tin cá nhân');
		
		// Tạo form hiểm thị điền thông tin
		$form = new Admin_Form_UserAdmin();
		
		//Remove các trường không được phép sửa;
		$form->removeElement('password');
		$form->removeElement('role');
		$form->removeElement('thanh_pho_phu_trach');
		$form->email->setAttribs(array('readonly' => 'readonly'));
		$form->email->clearValidators();
		
		$this->view->form = $form;
		$mapper = new Admin_Model_UsersAdminMapper();
		
		if ($this->_currentUser != null) {
			$arrData = $mapper->fetchAll('id=' . $this->_currentUser->id, 'edit');
			$data = array_shift($arrData);
			
			if ($data != null) {
				if ($this->getRequest()->isPost()) {
					$formData = $this->getRequest()->getPost();
					
					if ($form->isValid($formData)) {
						$inputDate = date_create_from_format('d-m-Y', $form->getValue('ngay_sinh'));
						
						if ($this->compareDate($inputDate)) {
							$userAdmin = new Admin_Model_TableColumn_UsersAdmin($data);
							$userAdmin->setHo_ten($form->getValue('ho_ten'));
							$userAdmin->setNgay_sinh($form->getValue('ngay_sinh'));
							$userAdmin->setDien_thoai($form->getValue('dien_thoai'));
							$userAdmin->setNguoi_cap_nhat($this->_currentUser->id);
							
							if($mapper->save($userAdmin)) {
								$this->view->msg = "Cập nhật thành công";
							} else {
								$this->view->msg = "Cập nhật thất bại! Vui lòng thử lại";
							}
						} else {
							$form->ngay_sinh->addError('Chưa đủ 18 tuổi.');
							$form->populate($formData);
						}
					} else {
						$form->populate($formData);
					}
				} else {
					$data['ngay_sinh'] = date("d-m-Y", strtotime($data['ngay_sinh']));
					$form->populate($data);
				}
			} else {
				$this->view->msg = "Dữ liệu không tồn tại trong database.";
			}
		}
	}
	
}